<?php
/**
 * directory.libaray.php
 * @Copyright lemonCarlJ All rights reserved.
 * @License http://www.56code.com/License.txt
 * @Version 1.0.0
 * @Email rpgshifa@aliyun.com
 */
namespace SF\libaray;

class directory
{
    /**
     * 创建目录
     * @param string $directory 目录地址
     * @param int $mode 目录权限 [ 0755 ]
     * @return boolean 返回是否创建成功
     */
    static public function create( $directory, $mode = 0755 )
    {
        return mkdir( $directory, $mode, true );
    }
    
    /**
     * 删除目录
     * @param string $directory 删除的目录
     * @param boolean $recursive 是否递归删除
     * @return boolean 返回是否删除成功
     */
    static public function delete( $directory, $recursive = false )
    {
        if( $recursive )
        {
            $directory_list = static::lists( $directory );
            if( !empty( $directory_list ) )
            {
                foreach ( $directory_list as $file_name )
                {
                    $file = $directory . DIRECTORY_SEPARATOR . $file_name;
                    if( is_dir( $file ) )
                    {
                        static::delete( $file, true );
                    }else{
                        unlink( $file );
                    }
                }
            }
        }
        
        return rmdir( $directory );
    }
    
    /**
     * 移动目录
     * @param string $directory 目录地址
     * @param string $move_directory 移动的目标目录
     * @return boolean 反正是否移动成功
     */
    static public function move( $directory, $move_directory )
    {
        $move_directory .= DIRECTORY_SEPARATOR . basename( $move_directory );
        return rename( $directory, $move_directory );
    }
    
    /**
     * 重命名目录
     * @param string $directory 目录地址
     * @param string $new_name 重命名
     * @return boolean 返回是否重命名成功
     */
    static public function rename( $directory, $new_name )
    {
        $new_directory = realpath( $directory . DIRECTORY_SEPARATOR . '..' ) . DIRECTORY_SEPARATOR . $new_name;
        return self::move( $directory, $new_directory );
    }
    
    /**
     * 获取目录列表
     * @param string $directory 目录地址
     * @return array 返回目录列表
     */
    static public function lists( $directory )
    {
        $directory_list = array();
        
        $handle = opendir( $directory );
        while( $file_name = readdir( $handle ) )
        {
            if( $file_name !== '.' && $file_name != '..' )
            {
                $directory_list[] = $file_name;
            }
        }
        
        closedir( $handle );
        
        return $directory_list;
    }
}